#pragma once

//////////////////////////////////////////////////////////////////////////
#include <boost/scoped_ptr.hpp>
#ifndef DECLARE_PIMPL_CLASS
#define DECLARE_PIMPL_CLASS()       struct pimpl_t; boost::scoped_ptr<pimpl_t> pimpl_;
#endif
#ifndef DEFINE_PIMPL_CLASS
#define DEFINE_PIMPL_CLASS(theClass) struct theClass::pimpl_t
#endif
#ifndef BEGIN_PIMPL_CLASS
#define BEGIN_PIMPL_CLASS(theClass) struct theClass::pimpl_t {
#endif
#ifndef END_PIMPL_CLASS
#define END_PIMPL_CLASS()           };
#endif
#ifndef NEW_PIMPL_CLASS
#define NEW_PIMPL_CLASS()           pimpl_(new pimpl_t)
#endif
#ifndef NEW_PIMPL_CLASS_EX
#define NEW_PIMPL_CLASS_EX(x)       pimpl_(new pimpl_t(x))
#endif
